package com.grupobbva.seguridad.domain;

import java.io.Serializable;
import javax.persistence.*;

import java.util.Date;
import java.util.List;


/**
 * The persistent class for the PERFIL_APLICACION database table.
 * 
 */
@Entity
@Table(name="PERFIL")
public class Perfil implements Serializable {
	private static final long serialVersionUID = 1L;

	@EmbeddedId
	private PerfilPK id;

	@Column(name="NOMBRE_CORTO")
	private String nombreCorto;

	@Column(name="NOMBRE_LARGO")
	private String nombreLargo;

	@Column(name="DESCRIPCION")
	private String descripcion;

    @ManyToOne
	@JoinColumn(name="TIPO_ID")
	private TablaDetalle tipo;

    @ManyToOne
	@JoinColumn(name="ESTADO_ID")
	private TablaDetalle estado;

	@Column(name="USUARIO_CREACION")
	private String usuarioCreacion;
	
	@Column(name="URL_DEFAULT")
	private String urlDefault;

    @Temporal(TemporalType.TIMESTAMP)
	@Column(name="FECHA_CREACION")
	private Date fechaCreacion;

	@Column(name="USUARIO_MODIFICACION")
	private String usuarioModificacion;

    @Temporal(TemporalType.TIMESTAMP)
	@Column(name="FECHA_MODIFICACION")
	private Date fechaModificacion;

	//bi-directional many-to-one association to Aplicacion
    @ManyToOne
	@JoinColumn(name="APLICACION_ID", insertable=false, updatable=false)
	private Aplicacion aplicacion;

	//bi-directional many-to-one association to PerfilOpcion
	@OneToMany(mappedBy="perfil")
	private List<PerfilOpcion> perfilOpcions;
	
	@Transient
	private List<PerfilControl> perfilControls;

    public Perfil() {
    }
    public Perfil(PerfilPK id) {
    	this.id = id;
    }

	public PerfilPK getId() {
		return this.id;
	}

	public void setId(PerfilPK id) {
		this.id = id;
	}
	
	public Date getFechaCreacion() {
		return this.fechaCreacion;
	}

	public void setFechaCreacion(Date fechaCreacion) {
		this.fechaCreacion = fechaCreacion;
	}

	public String getUsuarioCreacion() {
		return this.usuarioCreacion;
	}

	public void setUsuarioCreacion(String usuarioCreacion) {
		this.usuarioCreacion = usuarioCreacion;
	}

	public String getNombreCorto() {
		return this.nombreCorto;
	}

	public void setNombreCorto(String valorIntegracion) {
		this.nombreCorto = valorIntegracion;
	}

	public Aplicacion getAplicacion() {
		return this.aplicacion;
	}

	public void setAplicacion(Aplicacion aplicacion) {
		this.aplicacion = aplicacion;
	}
	
	public List<PerfilOpcion> getPerfilOpcions() {
		return this.perfilOpcions;
	}

	public void setPerfilOpcions(List<PerfilOpcion> perfilOpcions) {
		this.perfilOpcions = perfilOpcions;
	}

	public TablaDetalle getEstado() {
		return estado;
	}

	public void setEstado(TablaDetalle estado) {
		this.estado = estado;
	}

	public String getUsuarioModificacion() {
		return usuarioModificacion;
	}

	public void setUsuarioModificacion(String usuarioModificacion) {
		this.usuarioModificacion = usuarioModificacion;
	}

	public Date getFechaModificacion() {
		return fechaModificacion;
	}

	public void setFechaModificacion(Date fechaModificacion) {
		this.fechaModificacion = fechaModificacion;
	}
	public String getNombreLargo() {
		return nombreLargo;
	}
	public void setNombreLargo(String nombreLargo) {
		this.nombreLargo = nombreLargo;
	}
	public String getDescripcion() {
		return descripcion;
	}
	public void setDescripcion(String descripcion) {
		this.descripcion = descripcion;
	}
	public List<PerfilControl> getPerfilControls() {
		return perfilControls;
	}
	public void setPerfilControls(List<PerfilControl> perfilControls) {
		this.perfilControls = perfilControls;
	}
	public void setTipo(TablaDetalle tipo) {
		this.tipo = tipo;
	}
	public TablaDetalle getTipo() {
		return tipo;
	}
	/**
	 * @return the urlDefault
	 */
	public String getUrlDefault() {
		return urlDefault;
	}
	/**
	 * @param urlDefault the urlDefault to set
	 */
	public void setUrlDefault(String urlDefault) {
		this.urlDefault = urlDefault;
	}
	
	
}